package com.cskaoyan.javase.thread._3runnable;

/**
 * 模仿一下Runnable接口target的设计思路
 *
 * @since 11:47
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Test {
    public static void main(String[] args) {
        // 模拟多线程实现方式一
        new ASon().run();
        // 模拟多线程实现方式二
        new A(() -> System.out.println("6666!")).run();
    }
}

class ASon extends A {
    @Override
    public void run() {
        System.out.println("hello world!");
    }
}

// 这个类就模拟Thread类
class A {
    private IA ia;

    // 实现多线程方式一对应构造器
    public A() {
    }

    // 实现多线程方式二对应构造器
    public A(IA ia) {
        this.ia = ia;
    }

    public void run() {
        if (ia != null) {
            ia.run();
        }
    }
}

// 这个接口就模拟Runnable接口
interface IA {
    void run();
}